package com.hspedu.innerclass;

public class StaticInnerClass {
    public static void main(String[] args) {
        Outer05 outer05 = new Outer05();
        outer05.m1();

        //方式一：因为静态内部类，是可以通过类名直接访问的（前提是满足访问权限）
        Outer05.Inner10 inner10 = new Outer05.Inner10();
        inner10.say();

        //方式二：编写一个方法，返回静态内部类，通过外部类名.静态类名 对象名 接受即可
        Outer05.Inner10 inner101 = outer05.getInner10Instance();
        inner101.say();
    }
}

class Outer05{
    private int n1 = 10;
    private static String name = "张三";

    private static void cry(){};

    //Inner10就是一个静态内部类
    //1.它是外部类的成员位置上的
    //2.使用了static 修饰
    //3.可以访问外部类的静态类的所有成员，但不能访问非静态类的成员
    //4.可以添加任意访问修饰符(public、protected、默认、private)
    //5.作用域：同其他成员一样，为整个类体
    public static class Inner10{
        public void say(){
            System.out.println(name);
            cry();
        }
    }

    public void m1(){
        Inner10 inner10 = new Inner10();
        inner10.say();
    }

    public Inner10 getInner10Instance(){
        return new Inner10();
    }
}
